进程管理

进程与线程

进程

  进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位(注意与基本单位的区分)
  进程实现操作系统的并发性和共享性,进程映像由:程序段、相关数据段和PCB构成,其中PCB是进程存在的唯一标志。
  进程的特征包括:动态性、并发性、独立性、异步性、结构性

进程的转态和转换

  进程有以下五种状态:

  1. 运行状态
  2. 就绪状态
  3. 阻塞(等待)状态
  4. 创建状态
  5. 结束状态

  五种状态的转化关系如图
状态转化

进程控制

  1. 进程创建

    • 为新进程申请PCB
    • 为进程分配资源
    • 初始化PCB
    • 将进程插入到就绪队列
  2. 进程的终止

    • 检索PCB,读取进程状态
    • 若进程处于执行状态,终止该进程的执行
    • 终止子进程的执行(若有)
    • 释放该进程拥有的全部资源
    • 从队列中删除进程PCB
  3. 进程的阻塞

    • 找到将要阻塞进程的PCB
    • 若进程处于运行状态,则保护现场,将其状态转为阻塞状态,停止运行
    • 将PCB插入相应事件的等待队列
  4. 进程的唤醒

    • 找到进程PCB
    • 将进程从等待队列移出,置为就绪状态
    • PCB插入就绪队列,等待调度
  5. 进程切换

    • 保存处理机上下文
    • 更新PCB
    • 将PCB插入相应队列
    • 选择另外一个进程,更新PCB
    • 更新内存管理的数据结构
    • 恢复处理机上下文

进程的组织

  1. 进程控制块
      PCB常驻内存,是进程实体的一部分,是进程存在的唯一标志。PCB主要包含以下内容

    1. )进程描述信息:PID,UID
    2. )进程控制和管理信息:进程当前状态、进程优先级
    3. )资源分配清单
    4. )处理机相关信息:PWD等
  2. 程序段
      能被调度到CPU执行的程序代码段

  3. 数据段
      程序加工处理的原始数据或是程序执行时产生的中间或最终结果

进程的通信

  1. 共享内存:使用PV操作对共享空间进行读/写
  2. 消息传递:直接通信和间接通信
  3. 管道通信:连接读进程和写进程,以实现它们之间的通信,管道通信是半双工通信

线程

  1. 线程概念
      线程是轻量级进程,引入目的是为了提高操作系统并发性能。它是程序执行流的最小单元,不拥有系统资源

2. 进程和线程的比较

- 调度:线程是独立调度的基本单位,进程是拥有资源的基本单位,同一进程中,线程的切换不会引起进程调度。
- 拥有资源:进程是拥有资源的基本单位,线程不拥于资源
- 并发性:进程可并发执行,线程也可并发执行
- 系统开销:
- 地址空间和其他资源:进程的地址空间之间相互独立,同一进程的各个线程共享进程资源
- 通信:进程间通信需要同步和互斥手段,线程间通信可以通过直接读写进程数据段
  1. 线程的属性

    • 线程不拥有系统资源
    • 不同线程可以执行相同程序
    • 同一进程的线程共享进程资源
    • 线程是处理机的调度基本单位
    • 线程生命周期会经历阻塞,、就绪、和运行等各种状态
  2. 线程实现方式

    • 用户级线程:对内核透明
    • 内核级线程
  3. 多线程模型

    • 多对一模型:多个用户级线程映射到一个内核级线程,当一个线程在使用内核服务是被阻塞,整个进程都会被阻塞
    • 一对一模型:一个线程的阻塞妨碍另一个线程继续执行
    • 多对多模型

处理机调度

调度的概念

  1. 调度的基本概念
    处理机调度是指从就绪队列中,按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程并发地执行
  2. 调度的层级
    • 作业调度(高级调度):从外存挑选作业,为其分配内存、IO设备等资源,并建立进程,使进程获得竞争处理机的机会
    • 中级调度(内存调度):将处于挂起状态且已具备运行条件的就绪进程,重新调入内存,挂在就绪队列上
    • 进程调度(低级调度):按照某种策略从从就绪队列中选择一个进程,为其分配处理机

进程调度方式

  1. 非剥夺调度方式
  2. 剥夺调度方式

调度的基本准则

  1. CPU利用率
  2. 系统吞吐量:单位时间CPU完成的作业数量
  3. 周转时间:从作业提交到作业完成所经历的时间
  4. 等待时间:进程处于等待处理机状态时间之和
  5. 响应时间:从用户提交请求到系统首次响应所用时间

调度算法

  1. 先来先服务(FCFS)调度算法
  2. 短作业优先(SJF)调度算法
  3. 优先级调度算法
  4. 高响应比优先调度算法
  5. 时间片轮转调度算法
  6. 多级反馈队列调度算法

进程同步

基本概念

  1. 临界资源
    一次只允许一个进程访问的资源称为临界资源,访问临界资源的那段代码称为临界区

  2. 同步
    同步也称之为直接制约关系,是进程之间的制约关系

  3. 互斥
      互斥也称之为间接制约关系,进程互斥的共享临界资源。
    同步机制遵循准则:

    • 空闲让进
    • 忙则等待
    • 有限等待
    • 让权等待

实现临界区互斥的基本方法

  1. 软件实现方法

    • 单标志法:设置变量turn,用于指示被允许进入临界区的进程编号
    • 双标志法先检查:设置数组flag[i],若值为false表示Pi未进入临界区,否则相反。
    • 双标志法后检查:先设置自己的标志为true再检测对方状态标志
    • Peterson’s Algorithm:设置flag标志和turn标志
  2. 硬件实现方法

    • 中断屏蔽方法
    • 硬件指令方法

信号量

  1. 整型信号量
    表示资源数目的整型量S
  2. 记录型信号量
    代表资源数目的整型信号量value和进程链表L
  3. 利用信号量实现同步

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    semaphore S=0       //初始化信号量
    P1(){
    ...
    x; //语句x
    V(S); //告诉P2,语句x已经执行
    ...
    }
    P2(){
    ...
    P(S); //检测x是否完成
    y; //检查无误,运行y语句
    ...
    }
  4. 利用信号量实现进程互斥

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    semaphore S =1
    P1(){
    ...
    P(S);
    进程P1的临界区;
    V(S);
    ...
    }
    P2{
    ...
    P(S);
    进程P2的临界区;
    V(S);
    ...
    }

总结:
在互斥问题中,如果某个行为需要用到某种资源,就在那个行为之前P那种资源一次;如果某种行为会提供某种资源,就在那个行为之后V那种资源一次。PV操作紧夹临界区

管程